#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //设置窗口标题
    this->setWindowTitle("客户端");

    //1.创建QTcpSocket对象示例
    tcpSocket = new QTcpSocket(this);

    //2.建立连接 调用这个函数的时候os内核就会帮我们进行三次握手了，这是需要时间的
    //在Linux 原生api 中 connect函数是会阻塞的等待三次握手完成的， 而qt中这个函数是非阻塞的
    tcpSocket->connectToHost("110.40.209.26",8888);

    //3.绑定信号槽
    connect(tcpSocket,&QTcpSocket::readyRead,this,[=](){
        //读取服务器发来的响应信息
        QString text = tcpSocket->readAll();

        //显示日志
        QString log = "server echo@ " + text;
        ui->listWidget->addItem(log);
    });

    //4.等待连接建立成功
    bool ret = tcpSocket->waitForConnected();
    if(!ret){
        QMessageBox::critical(this,"connect",tcpSocket->errorString());
        exit(1);
    }

}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    //获取lineEdit的文本
    const QString &request = ui->lineEdit->text();

    //发送请求信息
    tcpSocket->write(request.toUtf8());

    //显示日志
    QString log = "client say# " + request;
    ui->listWidget->addItem(log);

    //将lineEdit的信息情况
    ui->lineEdit->setText("");
}
